package com.mkx.samples;

import com.mkx.behaviorals.strategy.*;

/**
 * 策略模式演示类
 * 演示如何使用策略模式定义算法族，并使它们可以互相替换
 */
public class StrategyDemo {
    public static void main(String[] args) {
        System.out.println("===== 策略模式演示 =====");
        
        // 创建策略对象
        Strategy strategyA = new ConcreteStrategyA();
        Strategy strategyB = new ConcreteStrategyB();
        
        // 创建上下文
        Context context = new Context();
        
        // 设置策略A并执行
        System.out.println("使用策略A：");
        context.setStrategy(strategyA);
        context.executeStrategy("测试数据");
        
        // 切换策略B并执行
        System.out.println("使用策略B：");
        context.setStrategy(strategyB);
        context.executeStrategy("测试数据");
        
        // 策略模式的优势：可以在运行时动态切换算法
        System.out.println("策略模式演示完成\n");
    }
}